Skip to content

Claude/continue development qgiw l#2

Merged
marcoloco23 merged 8 commits intomainfrom
claude/continue-development-QgiwL
Mar 1, 2026
Merged

Claude/continue development qgiw l#2
marcoloco23 merged 8 commits intomainfrom
claude/continue-development-QgiwL

Conversation

@marcoloco23
Copy link
Copy Markdown
Owner

No description provided.

claude added 8 commits March 1, 2026 06:30
…eline

- Set up Jest + React Testing Library testing infrastructure for Next.js frontend
- Write smoke tests for all pages (Home, TaxonDetail, Sequences) and components
  (SearchBox, TaxonCard, Skeleton), plus API client and utility tests
- Add backfill_ncbi_tax_id.py pipeline step that queries NCBI Taxonomy API
  by scientific name to populate the ncbi_tax_id column
- Add 6 unit tests for the NCBI taxonomy ID lookup function
- Total test count: 117 (59 API + 58 frontend)

https://claude.ai/code/session_01NKQ34hreauk5SGYfSPEWFT
…ontend tests

- Expand NCBI ingestion with broader COI gene search terms (COI/COX1/COXI/CO1
  + cytochrome c oxidase title variants), genus-level fallback when species
  search fails, --skip-existing and --no-genus-fallback flags
- Add dedup_sequences.py pipeline step to remove duplicate accessions,
  keeping longest sequence per (ott_id, accession, marker) tuple
- Make SCOPE_OTT_ROOT configurable: env var in docker-compose, --scope CLI
  arg for ingest_ott, exposed in /health endpoint response
- Add frontend tests to CI pipeline (npm test step)
- 18 new tests (15 ingestion + 3 dedup), total: 135 (77 API + 58 frontend)

https://claude.ai/code/session_01NKQ34hreauk5SGYfSPEWFT
- Refactor validate.py: extract compute_validation_report() returning
  structured ValidationReport with OutlierRecord dataclass, JSON export
  via --output flag, cross-family close and within-genus distant detection
- Add /v1/stats endpoint: taxa by rank, sequences by source, edge counts
  with distance summary, species coverage percentage
- Add ErrorBoundary React component: catches render errors, shows retry
  button, supports custom fallback, wraps main layout
- Add getStats() to frontend API client with StatsResponse type
- 14 new tests: 12 validation (walk_to_rank, report structure, outlier
  detection), 2 stats endpoint
- 5 new frontend tests: ErrorBoundary (render, fallback, retry, custom)
- Extend MockQuery with select_from() and one() for stats queries

Total: 154 tests (91 API + 63 frontend), all passing

https://claude.ai/code/session_01NKQ34hreauk5SGYfSPEWFT
- Stats dashboard page (/stats): taxa by rank breakdown with color bar,
  sequences by source, MI distance distribution, coverage percentage
- Rate limiting middleware: sliding-window per-IP (100 req/min), excludes
  /health and /docs, returns X-RateLimit-Limit/Remaining headers, 429
  with Retry-After when exceeded
- Next.js error.tsx and not-found.tsx pages for graceful error handling
- Nav bar updated with Stats link
- 5 new rate limit tests, 1 new API client test (getStats)

Total: 160 tests (96 API + 64 frontend), all passing

https://claude.ai/code/session_01NKQ34hreauk5SGYfSPEWFT
- Request logging middleware with X-Request-ID header for tracing
- Configurable CORS origins via CORS_ORIGINS env var
- StatsPage test suite (7 tests) covering all dashboard features
- Request logging tests (3 tests)

https://claude.ai/code/session_01NKQ34hreauk5SGYfSPEWFT
- Search endpoint returns SearchPage with total count for pagination UX
- Sequences endpoint adds offset/limit pagination (SequencePage response)
- New /health/ready endpoint: DB connectivity check + connection pool stats
- Lifespan context manager for clean connection pool disposal on shutdown
- Updated frontend types, API client, and components for new response shapes
- All existing tests updated for paginated response format (174 total)

https://claude.ai/code/session_01NKQ34hreauk5SGYfSPEWFT
- Multi-stage Dockerfiles: dev (hot-reload) + prod (multi-worker, non-root user)
- Web prod stage uses Next.js standalone output (~80% smaller image)
- API prod stage runs 4 uvicorn workers with warning-level logging
- docker-compose.prod.yml override: no source mounts, env-based DB password
- Structured logging: JSON format for production log aggregators, configurable level
- New settings: LOG_LEVEL (debug-critical), LOG_FORMAT (text/json)
- Makefile: up-prod / down-prod targets
- 5 new logging config tests (179 total)

https://claude.ai/code/session_01NKQ34hreauk5SGYfSPEWFT
- Security headers middleware: X-Content-Type-Options, X-Frame-Options,
  X-XSS-Protection, Referrer-Policy, Permissions-Policy on all responses
- Cache-Control headers: MI network (5min), stats (1min)
- Graph page test suite (8 tests): loading, title, stats, error, node search
- SearchBox keyboard navigation: ArrowUp/Down, Enter to select, Escape to close
- SearchBox ARIA: combobox role, aria-expanded, aria-selected, listbox/option
- 192 total tests (110 API + 82 frontend)

https://claude.ai/code/session_01NKQ34hreauk5SGYfSPEWFT
@gitguardian
Copy link
Copy Markdown

gitguardian bot commented Mar 1, 2026

⚠️ GitGuardian has uncovered 1 secret following the scan of your pull request.

Please consider investigating the findings and remediating the incidents. Failure to do so may lead to compromising the associated services or software components.

🔎 Detected hardcoded secret in your pull request
GitGuardian id GitGuardian status Secret Commit Filename
27707902 Triggered Generic Password 8343e1e docker-compose.prod.yml View secret
🛠 Guidelines to remediate hardcoded secrets
  1. Understand the implications of revoking this secret by investigating where it is used in your code.
  2. Replace and store your secret safely. Learn here the best practices.
  3. Revoke and rotate this secret.
  4. If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.

To avoid such incidents in the future consider


🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.

@marcoloco23 marcoloco23 merged commit f325cfb into main Mar 1, 2026
2 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants